﻿
namespace EF41RiaServicesSample.Web.Services
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data;
    using System.Linq;
    using System.ServiceModel.DomainServices.EntityFramework;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;
    using EF41RiaServicesSample.Web.Models;


    // SampleDBEntities コンテキストを使用してアプリケーション ロジックを実装します。
    // TODO: これらのメソッドまたは追加のメソッドにアプリケーション ロジックを追加します。
    // TODO: 認証を設定し (Windows/ASP.NET Forms)、次の文字列のコメントを解除して、匿名アクセスを無効にします。
    // 必要に応じ、ロールを追加してアクセスを制限することも検討してください。
    // [RequiresAuthentication]
    [EnableClientAccess()]
    public class SampleService : DbDomainService<SampleDBEntities>
    {

        // TODO:
        // クエリ メソッドの結果を限定することを検討してください。追加の入力が必要な場合は、
        //このメソッドにパラメーターを追加するか、追加のクエリ メソッドを別の名前で作成します。
        // ページングをサポートするには、'Countries' クエリに順序を追加する必要があります。
        public IQueryable<Country> GetCountries()
        {
            return this.DbContext.Countries;
        }

        // TODO: 登録系は使うときに書きます。

        //public void InsertCountry(Country country)
        //{
        //    if (DbContext.Entry(country).State != EntityState.Detached)
        //    {
        //        this.DbContext.Entry(country).State = EntityState.Added;
        //    }
        //    else
        //    {
        //        this.DbContext.Countries.Add(country);
        //    }
        //}

        //public void UpdateCountry(Country currentCountry)
        //{
        //    this.DbContext.Countries.AttachAsModified(currentCountry, this.DbContext);
        //}

        //public void DeleteCountry(Country country)
        //{
        //    if (DbContext.Entry(country).State != EntityState.Detached)
        //    {
        //        this.DbContext.Entry(country).State = EntityState.Deleted;
        //    }
        //    else
        //    {
        //        this.DbContext.Countries.Attach(country);
        //        this.DbContext.Countries.Remove(country);
        //    }
        //}

        // TODO:
        // クエリ メソッドの結果を限定することを検討してください。追加の入力が必要な場合は、
        //このメソッドにパラメーターを追加するか、追加のクエリ メソッドを別の名前で作成します。
        // ページングをサポートするには、'Drivers' クエリに順序を追加する必要があります。
        public IQueryable<Driver> GetDrivers()
        {
            return this.DbContext.Drivers.Include("Countries");
        }

        // TODO: 登録系は使うときに書きます。

        //public void InsertDriver(Driver driver)
        //{
        //    if (DbContext.Entry(driver).State != EntityState.Detached)
        //    {
        //        this.DbContext.Entry(driver).State = EntityState.Added;
        //    }
        //    else
        //    {
        //        this.DbContext.Drivers.Add(driver);
        //    }
        //}

        //public void UpdateDriver(Driver currentDriver)
        //{
        //    this.DbContext.Drivers.AttachAsModified(currentDriver, this.DbContext);
        //}

        //public void DeleteDriver(Driver driver)
        //{
        //    if (DbContext.Entry(driver).State != EntityState.Detached)
        //    {
        //        this.DbContext.Entry(driver).State = EntityState.Deleted;
        //    }
        //    else
        //    {
        //        this.DbContext.Drivers.Attach(driver);
        //        this.DbContext.Drivers.Remove(driver);
        //    }
        //}
    }
}


